import numpy as np 

## Tip 1
'''
对数组（其实pytorch的张量也可以）的索引可以用另外一个数组（张量）
如果表示索引的列表的元素数少于维度数，表示剩余维度全部获取
'''
# Eg1:
a1 = np.arange(10)
b1 = np.array([[1, 3], [2, 7]])
print(a1[b1])
# output: a1[b1] = [[1, 3], [2, 7]]
# 取出a1中b1位置的元素，并放在b1的维度里

# Eg2:
a2 = np.arange(10).reshape(5, 2)
print('a2 =',a2)
# output: a2 = [[0 1], [2 3], [4 5], [6 7], [8 9]]
b2 = np.array([[1, 3], [2, 4]])
print('a2[b2] =',a2[b2])
# output:a2[b]= [[[2 3], [6 7]], [[4 5], [8 9]]]
# 取出a2中的第一个维度（行），放入b2的位置

# Eg3:
a3 = np.arange(16).reshape(2, 4, 2)
b3 = np.array([[[0, 1]]])
print('a3[b3]=',a3[b3])
## output = [[[[[0, 1], [2, 3], [4, 5], [6, 7]], [[8, 9], [10, 11], [12, 13], [14, 15]]]]]
## 同样，拿出a3的最外层维度的b3索引值(即两个4x2的矩阵)，放入b3的维度里（三维数组的dim=2处两个列）。